// tcp_server.hpp
#include "tcp_server.hpp"
#include <memory>
#include "Daemon.hpp"
using namespace std;

// 业务处理动作
string echo(string str)
{
    return str;
}

// 提示正确的服务器启动方法
void Usage(const string &proc)
{
    cout << "Method of Use:" << proc << " serverport" << endl;
}

int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        // 保证正确服务器
        Usage(argv[0]);
        exit(USE_ERR);
    }

    // 提取服务器端口
    uint16_t serverport = atoi(argv[1]);
    unique_ptr<Server> s(new Server(echo, serverport));
    // 服务器初始化
    s->Init();

    // 使服务器变成守护进程，使服务器在后台始终运行
    //不放最前面是为了保证服务器初始化（创建套接字，绑定，监听）都正常
    Daemon();

    // 服务器开始运行
    s->Start();

    return 0;
}
